// 请求的封装
// import request from 'umi-request';
import { extend } from 'umi-request';
import { message } from 'antd';
import { history } from 'umi';

const request = extend({
  prefix: 'http://pudge.wang:9999/admin',
  timeout: 1000,
});

// 请求拦截器，请求之前会触发这个函数
request.interceptors.request.use((url, options: any) => {
  // console.log(options);

  options.headers.token = localStorage.getItem('token') || '';

  return {
    url: url,
    options: options,
  };
});

// 响应拦截器，会在每一次请求得到结果的时候触发
// 做token验证的话，在axios里面可以使用响应拦截
// request.interceptors.response.use((response: any) => {
//   // 直接判断code是否是“10119”,token过期
//   // console.log(response);

//   if (response.code === '10119') {
//     message.error(response.message);
//     history.push('/login');
//     localStorage.clear();
//   } else {
//     return response;
//   }
// });

const http = {
  get(url: string, params?: object) {
    return request
      .get(url, {
        params: params,
      })
      .then((res) => {
        if (res.code === '200') {
          return res;
        } else if (res.code === '10119' || res.code === '10120') {
          // token无效 根据token判断出无权限
          message.error(res.message);
          history.push('/login');
          localStorage.clear();
        } else {
          message.error(res.message);
        }
      })
      .catch((error) => {
        message.error(error.message);
      });
  },
  post(url: string, data?: object) {
    return request
      .post(url, {
        data: data,
      })
      .then((res) => {
        if (res.code === '200') {
          return res;
        } else if (res.code === '10119') {
          message.error(res.message);
          history.push('/login');
          localStorage.clear();
        } else {
          message.error(res.message);
        }
      })
      .catch((error) => {
        message.error(error.message);
      });
  },
};

export default http;
